Schulung, Beratung und Entwicklung

Glück IT

Gesellschaft für IT Beratung, Schulung und Entwicklung

NEWS

Content Management System ®CMAssist

Reporting Services übergabe von Parameter-Bitwerten

Mehrwertige Parameter im SQL Server Reporting Services sind sowohl Fluch als wie auch Segen, denn der Umgang mit diesen setzt einiges an Visual Basic Wissen voraus. Sehr häufig kommt man mit einem Join Ausdruck an sein Ziel, nicht aber wenn mit Bits gearbeitet werden muss. Hier muss dann häufig die Summe aus den Parameter Werten ermittelt werden.

="SELECT ID  FROM  Laender WHERE  (ID & (" & Join(Parameters!Laender.Value, "+") & ") > 0)"

Das Ergebnis dieser Operation, wenn der Benutzer das Land 1 und 2 ausgewählt hat, ist folgendes SQL Statement:

SELECT * FROM Laender WHERE (ID & (1+2) & ") > 0)"

Entsprechend findet folgende Bitoperation statt: Feldwert & 3 entspricht Feldwert & 0011

Beispiel:

IntegerBitAnzeige
10001Ja
20010Ja
40100Nein
70111Ja
30011Ja
81000Nein
91001Ja

Alternativ kann das ganze auch in VB Code umgesetzt werden:

Public Function ArraySum(arr() As Object) As Long
Dim i As Long, summe as Long
For Each i In arr
summe = summe + i
Next i
ArraySum = summe
End Function

Dieser Funktion kann ein Mehrwertiger Parameter übergeben werden, als Ergebnis kommt die Summe der Values der angewählten Parameter. Diese Funktion kann nun in einem Parameter der als "Intern" gekennzeichnet ist, als Standartwert angegeben werden.
Der Aufruf geht folgendermassen:

=Code.ArraySum(Parameters!Laender.Value)
Berichtsparameter im Report Designer

Der Vorteil dieser Methode ist das die Abfrage wie gewohnt geschrieben werden kann, also der Abfragedesigner weiterhin verwendet werden kann, die Abfrage sieht dann in etwa so aus:

SELECT    *
FROM Datentabelle
WHERE (ID & @Bits > 0)

Viel Spaß bei der Umsetzung Ihres Problems.

Haben Sie Fragen oder Anmerkungen? Ich stehe Ihnen gerne zur Verfügung Ihr Frank Glück